/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.DAO;

import br.com.documentar.interfacee.InterfaceDAO;
import br.com.documentar.model.VideoVersaoCategoriaModel;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Santos
 */
public class VideoVersaoCategoriaDAO extends AbstractDAO implements
        InterfaceDAO<List<br.com.documentar.model.VideoVersaoCategoriaModel>, br.com.documentar.model.VideoVersaoCategoriaModel> {

    @Override
    public boolean setDados(VideoVersaoCategoriaModel model) {
        String sql = null;
        ConnectDataBase();
        switch (model.getActionScript()) {

            case "I":
                sql = "INSERT INTO \n"
                        + "  `tvid_video`\n"
                        + "(\n"
                        //+ "  `TVID_CODIGO_PK`,\n"
                        + "  `TVID_TELA_FK`,\n"
                        + "  `TVID_VERSAO_FK`,\n"
                        + "  `TVID_CATEGORIA_FK`,\n"
                        + "  `TVID_LINK_VIDEO`,\n"
                        + "  `TVID_NOME`,\n"
                        + "  `TVID_DATA`,\n"
                        + "  `TVID_COMENTARIO`,\n"
                        + "  `TVID_ATIVO`) \n"
                        + "VALUE (\n"
                        //+ "  :TVID_CODIGO_PK,\n"
                        + "  " + model.getTelaModel().getCodigo() + ",\n"
                        + "  " + model.getCategoriaVersao().getVersao().getCodigo() + ",\n"
                        + "  " + model.getCategoriaVersao().getCategoria().getCodigo() + ",\n"
                        + "  '" + model.getLinkVideo() + "',\n"
                        + "  '" + model.getNome() + "',\n"
                        + "  '" + model.getDataPostagem() + "',\n"
                        + "  '" + model.getComentario() + "',\n"
                        + "  '" + model.getAtivo() + "')";
                break;
            case "U":
                sql = "UPDATE \n"
                        + "  `tvid_video`  \n"
                        + "SET \n"
                        + "  `TVID_TELA_FK` = " + model.getTelaModel().getCodigo() + ",\n"
                        + "  `TVID_VERSAO_FK` = " + model.getCategoriaVersao().getVersao().getCodigo() + ",\n"
                        + "  `TVID_CATEGORIA_FK` = " + model.getCategoriaVersao().getCategoria().getCodigo() + ",\n"
                        + "  `TVID_LINK_VIDEO` = '" + model.getLinkVideo() + "',\n"
                        + "  `TVID_NOME` = '" + model.getNome() + "',\n"
                        + "  `TVID_DATA` = '" + model.getDataPostagem() + "',\n"
                        + "  `TVID_COMENTARIO` = '" + model.getComentario() + "',"
                        + "  `TVID_ATIVO` = '" + model.getAtivo() + "'\n"
                        + "WHERE \n"
                        + "  `TVID_CODIGO_PK` = " + model.getCodigo() + "";
                break;
            case "D":
                sql = "DELETE FROM \n"
                        + "  `tvid_video` \n"
                        + "WHERE \n"
                        + "  `TVID_CODIGO_PK` = " + model.getCodigo() + "";
                break;
        }
        return InsertUpdateDelete(sql, model.getNomeTela());
    }

    @Override
    public List<VideoVersaoCategoriaModel> getDados(VideoVersaoCategoriaModel model) {
        model.setResultSet(null);
        model.getListaCategoriaVersao().clear();
        String sql = "SELECT \n"
                + "                 `video`.`TVID_CODIGO_PK`,\n"
                + "                 `produto`.`TPRO_CODIGO_PK`,\n"
                + "                 `produto`.`TPRO_NOME`,\n"
                + "                 `video`.`TVID_VERSAO_FK`,\n"
                + "                 `versao`.`TVER_NOME`,\n"
                + "                 `video`.`TVID_CATEGORIA_FK`,\n"
                + "                 `fnc_caminho_completo`(`video`.`TVID_CATEGORIA_FK`) TCAT_NOME,\n"
                + "                 `video`.`TVID_TELA_FK`,\n"
                + "                 COALESCE(`fnc_caminho_completo_tela`(`video`.`TVID_TELA_FK`), 'RAIZ') CAMINHO_COMPLETO_TELA,\n"
                + "                 `video`.`TVID_LINK_VIDEO`,\n"
                + "                 `video`.`TVID_NOME`,\n"
                + "                 `video`.`TVID_DATA`,\n"
                + "                 `video`.`TVID_COMENTARIO`,\n"
                + "                 `video`.`TVID_ATIVO`\n"
                + "                 FROM \n"
                + "                  `tvid_video` video\n"
                + "                 inner JOIN  `tlnk_categoria_versao` categoriaVersao on \n"
                + "                 `video`.`TVID_CATEGORIA_FK` = `categoriaVersao`.`TLNK_CATEGORIA_FK_PK` and \n"
                + "                 `video`.`TVID_VERSAO_FK` = `categoriaVersao`.`TLNK_VERSAO_FK_PK` AND\n"
                + "                 `video`.`TVID_TELA_FK` = `categoriaVersao`.`TLNK_TELA_FK_PK`\n"
                + "                 inner JOIN  `tcat_categoria` `categoria`   on \n"
                + "                 `categoriaVersao`.`TLNK_CATEGORIA_FK_PK` = `categoria`.tcat_codigo_pk\n"
                + "                 inner JOIN `tver_versao` `versao` on\n"
                + "                 `categoriaVersao`.`TLNK_VERSAO_FK_PK` =  `versao`.`TVER_CODIGO_PK`\n"
                + "                 INNER JOIN `tpro_produto` produto on\n"
                + "                 `versao`.`TVER_PRODUTO_FK` = `produto`.`TPRO_CODIGO_PK`";
        try {
            ConnectDataBase();
            switch (model.getActionScript()) {
                case "C":
                    model.setResultSet(Select(sql, model.getNomeTela()));
                    break;
                case "P":
                    model.setResultSet(Select(sql + " where `video`.`TVID_NOME` like  '%" + model.getNome() + "%'", model.getNomeTela()));
                    break;
                case "porProduto":
                    //model.setResultSet(Select(sql + " where `versao`.`TVER_PRODUTO_FK` = " + model.getProduto().getCodigo() + ""));
                    break;
                case "porVersao":
                    //model.setResultSet(Select(sql + " where `categoriaVersao`.`TLNK_VERSAO_FK_PK` = " + model.getVersao().getCodigo() + ""));
                    break;
            }
            while (model.getResultSet().next()) {
                br.com.documentar.model.VideoVersaoCategoriaModel p = new br.com.documentar.model.VideoVersaoCategoriaModel();
                p.setCodigo(rs.getInt("TVID_CODIGO_PK"));
                p.getCategoriaVersao().getProduto().setCodigo(rs.getInt("TPRO_CODIGO_PK"));
                p.getCategoriaVersao().getProduto().setNome(rs.getString("TPRO_NOME"));
                p.getCategoriaVersao().getVersao().setCodigo(rs.getInt("TVID_VERSAO_FK"));
                p.getCategoriaVersao().getVersao().setNome(rs.getString("TVER_NOME"));
                p.getCategoriaVersao().getCategoria().setCodigo(rs.getInt("TVID_CATEGORIA_FK"));
                p.getCategoriaVersao().getCategoria().setNome(rs.getString("TCAT_NOME"));
                p.getTelaModel().setCodigo(rs.getInt("TVID_TELA_FK"));
                p.getTelaModel().setNome(rs.getString("CAMINHO_COMPLETO_TELA"));
                p.setLinkVideo(rs.getString("TVID_LINK_VIDEO"));
                p.setNome(rs.getString("TVID_NOME"));
                p.setDataPostagem(rs.getString("TVID_DATA"));
                p.setComentario(rs.getString("TVID_COMENTARIO"));
                p.setAtivo(rs.getString("TVID_ATIVO").charAt(0));
                model.getListaCategoriaVersao().add(p);
            }
        } catch (SQLException ex) {
            ex.getStackTrace();
        } finally {
            Desconectar(model.getNomeTela());
        }
        return model.getListaCategoriaVersao();
    }
}
